Hierarchical permissions model for case management

ABSTRACT

Case management systems and techniques are disclosed. In various embodiments, a hierarchical permission model is received, comprising for each of at least a subset of case nodes comprising a hierarchical data model associated with a case model a corresponding set of case roles to be afforded permissions with respect to that case node and for each such case role a set of permissions to be associated with that case role with respect to that case node. The hierarchical permission model is used to enforce with respect to one or more case instances associated with the case model the permissions defined in the hierarchical permission model.

CROSS-REFERENCE TO RELATED APPLICATION(S)

This patent application is a continuation of, and claims a benefit ofpriority under 35 U.S.C. § 120 from U.S. patent application Ser. No.16/015,048, filed Jun. 21, 2018, entitled “HIERARCHICAL PERMISSIONSMODEL FOR CASE MANAGEMENT”, which is a continuation of, and claims abenefit of priority under 35 U.S.C. § 120 from U.S. patent applicationSer. No. 14/502,194, filed Sep. 30, 2014, issued as U.S. Pat. No.10,032,124, entitled “HIERARCHICAL PERMISSIONS MODEL FOR CASEMANAGEMENT”, which claims a benefit of priority under 35 U.S.C. § 119(e)from U.S. Patent Application No. 62/031,592, filed Jul. 13, 2014,entitled “HIERARCHICAL PERMISSIONS AND CASE ROLES FOR CASE MANAGEMENT”,all of which are hereby fully incorporated by reference herein for allpurposes.

BACKGROUND

Case management systems, software, and/or cloud-based or otherelectronically-provided case management services (collectively, “CaseManagement Systems”) are used to automate the management of complex setsof documents or other content and associated business or otherprocesses, particularly in situations in which the documents or othercontent that may need to be managed for respective particular instancesof a case model/type (e.g., a loan application) may not be the same foreach instance and the processing required and/or selected to beperformed may not be the same for each instance.

A case model (“Case Model”) typically describes a type of case,instances of which are to be managed by a Case Management System. Asopposed to very structured business process that defines a predeterminedwork flow that does not vary from instance to instance, using a CaseModel one can model ad hoc actions and define responses thereto withmini workflows, enabling the processing of respective instances of aCase Model to be determined dynamically at runtime based, e.g., onevents, context data, user input, dynamic evaluation of documents orother content, etc. As a result, each instance of a Case Model (e.g.,the respective loan applications of different applicants) may follow itsown course as determined at each step by processing as defined inapplicable portions of the Case Model.

BRIEF DESCRIPTION OF THE DRAWINGS

Various embodiments of the technology are disclosed in the followingdetailed description and the accompanying drawings.

FIG. 1 is a flow chart illustrating an example embodiment of a processto perform case management.

FIG. 2 is a block diagram illustrating an example embodiment of a casemanagement system and environment.

FIG. 3 is a block diagram illustrating an example embodiment of a casemanagement system.

FIG. 4 is a diagram illustrating an example embodiment of a process andsystem to create and/or provide access to case management instances.

FIG. 5 is a flow chart illustrating an example embodiment of a processto receive and store a case model.

FIG. 6 is a flow chart illustrating an example embodiment of a processto receive and store a case model.

FIG. 7 is a block diagram illustrating an example of a hierarchical datamodel in an embodiment of a case management system.

FIG. 8 is a block diagram illustrating an example of a hierarchical datamodel in an embodiment of a case management system

FIG. 9 is a block diagram illustrating an example of a hierarchical datamodel and associated state machine in an embodiment of a case managementsystem.

FIG. 10 is a block diagram illustrating an example of a state machinedefined for a case node in an embodiment of a case management system.

FIG. 11 is a flow chart illustrating an example embodiment of a processto define a state machine for a case node in an embodiment of a casemanagement system.

FIG. 12 is a flow chart illustrating an example embodiment of a processto define hierarchical permissions model for case management.

FIG. 13 is a flow chart illustrating an example embodiment of a processto define hierarchical permissions conditioned on case node state.

FIG. 14 is a block diagram illustrating an example of a hierarchicaldata model and associated permission in an embodiment of a casemanagement system.

FIG. 15A is a block diagram illustrating an example of a hierarchicaldata model and associated permission model in an embodiment of a casemanagement system.

FIG. 15B is a block diagram illustrating an example of an instance of ahierarchical data model and associated permission model in an embodimentof a case management system.

FIG. 16 is a flow chart illustrating an example embodiment of a processto associate users with case roles.

FIG. 17 is a flow chart illustrating an example embodiment of a processto provide and control access based on a hierarchical permissions model.

DETAILED DESCRIPTION

The technology can be implemented in numerous ways, including as aprocess; a system; a computer program product embodied on a computerreadable storage medium; and/or a processor, such as a processorconfigured to execute instructions stored on and/or provided by a memorycoupled to the processor. In general, the order of the steps ofdisclosed processes may be altered within the scope of the technology.Unless stated otherwise, a component such as a processor or a memorydescribed as being configured to perform a task may be implemented as ageneral component that is temporarily configured to perform the task ata given time or a specific component that is manufactured to perform thetask. As used herein, the term ‘processor’ refers to one or moredevices, circuits, and/or processing cores configured to process data,such as computer program instructions.

A detailed description of one or more embodiments of the technology isprovided below along with accompanying figures that illustrate thetechnology. The technology is described in connection with suchembodiments, but the technology is not limited to any embodiment. Thescope of the technology is limited only by the claims and the technologyencompasses numerous alternatives, modifications and equivalents.Numerous specific details are set forth in the following description inorder to provide a thorough understanding of the technology. Thesedetails are provided for the purpose of example and the technology maybe practiced according to the claims without some or all of thesespecific details.

A hierarchical permissions model for case models is disclosed. Invarious embodiments, case roles may be defined and at case nodes in thehierarchy one or more case roles may be associated with that case nodeand for each role the associated permissions of that role at that casenode may be specified. In some embodiments, the permissions associatedwith a case role with respect to a case node may be conditional,depending for example on a current state of a state machine defined forthe case node, etc.

FIG. 1 is a flow chart illustrating an example embodiment of a processto perform case management. In the example shown, a case modeldefinition is received and stored (102). The case model definition isused to create new instances based on the case model, sometimes referredto herein as “case instances” or “case management instances”, and/or toprovide access to previously-created instances (104). For example, acase model may be defined and stored for a loan application andassociated processes. Case instances may be created based on the casemodel and each respective case instance used to manage a correspondingloan application, for example by different respective loan applicants.

A case model typically describes a case management system. Using a casemodel, one can model ad hoc actions with mini workflows, for example, asopposed to very structured process that defines an end-to-end businessworkflow. In various embodiments, a case model comprises ahierarchical/nested container model (sometimes referred to herein as a“hierarchical data model”), and may in addition define case roles, casephases (states), and/or permissions. In some embodiments, permissionsmay be defined for each case node and/or level in the hierarchy, and mayvary in some embodiments based at least in part on the respective phases(states) of a state machine defined for a case node.

In various embodiments, a case model may include a hierarchical/nestedcontainer model. This model represents how the data with in a case isorganized and what data is captured during runtime. Each node in thehierarchy is sometimes referred to herein as a “case node”. Case nodesat the lowest level of a case model hierarchy may be referred to as“case leaf nodes” or simply “leaf nodes”. “Case leaf nodes” in variousembodiments may point to a specific business object or document type.

The term “case role” is used herein to refer to user roles that havebeen defined in a case model. In various embodiments, users may beassigned to case roles with respect to instances of a case model, and ateach case node in the case model permissions may be designated byreference to one or more case roles. During runtime in some embodiments,members may be added or removed from these roles at case node instancescorresponding to respective instances of a type of case as defined in acase model.

In various embodiments, at each case node, a metadata model that definesone or more traits and/or associated behavior may be defined.

In various embodiments, a case model as described herein may be createdusing a domain-specific or other development module or tool. Forexample, reusable elements, such sample case nodes typical of those usedin the domain (e.g., documents, case roles, behaviors, etc. typicallyassociated with a loan application process, a new drug approvalapplication, etc.), primitives usable to define a state machine and/orassociated processing for respective case nodes, etc., may be provided.For example, an application programming interface (API) may be defined,and/or a visual or other case model development tool may be provided.

In various embodiments, a case model definition is embodied in an XML orother structured data file. A case management system and/or platform isprovided, which is configured (e.g., by software) to load a case modeldefinition, parse the definition, and create an instance of the casemodel based on the definition. Instance-specific attributes and/or stateinformation or other metadata may be stored in a case model instancedata store, e.g., a database. At runtime, the case model definition fileand the case model instance data for a given instance are used by thedisclosed case management system to implement the case model instance,including by performing processing and managing case model instanceassociated content per the case model definition, in light of thecurrent values of the case model instance data for that instance.

FIG. 2 is a block diagram illustrating an example embodiment of a casemanagement system and environment. In the example shown, client systems202 are connected via a network 204, e.g., the Internet, to a casemanagement system 206. In various embodiments, the case managementsystem 206 may be configured to implement the process of FIG. 1. Casemanagement system 206 uses case models stored in data storage 208 toprovide case management services with respect to case managementinstances, the instance variable data values of which also are stored,in this example, in data storage 208. For example, one or more ofclients 202 may connect via network 204 to case management system 206 toobtain access to case management services. For example, case managementsystem 206 may expose a “case management system as a service”, e.g., asa web service, enable clients 202 to connect to case management system206, create case management instances based on case models stored indata storage 208. The users of client system 202 may be prompted toprovide data values and/or other user input to populate case managementinstances with metadata, user data, documents, etc., and/or such otheruser input as may be required to advance case instances through casemanagement processing as defined in the case model.

In the example shown in FIG. 2, a case model developer system 210, e.g.,a client computer system, also can connect to case management system 206via network 204. In some embodiments, a case model development userinterface and/or service may be accessed and used to define a casemodel. For example, a visual or other developer tool may be presented toenable a developer using client system 210 to define a case model andcause the case model to be stored in data storage 208 and deployed bycase management system 206. In some embodiments, deployment of a casemodel includes making the case model available to be used to create casemanagement instances based on the model, and to use the case model toperform with respect to each such instance the case managementprocessing as defined in the case model.

In various embodiments, a case model may indicate one or more contentobjects to be associated with respective instances of a case model. Thecase model may include metadata and associated behaviors to enableinstance-specific content objects (e.g., documents) to be associatedwith case leaf nodes of a case instance. In the example shown in FIG. 2,content objects may be accessed via a content management system 212configured to manage content objects stored in an associated contentrepository 214. In various embodiments, case management system 206 maybe configured to use instance variables associated with a given caseinstance and metadata and/or behaviors defined in an associated casemodel to interact programmatically with content management system 212 toobtain and/or manage documents or other content objects associated witha case instance. In some embodiments, case management system 206 may beconfigured, e.g., via the case model, to invoke services and/or otherfunctionality of content management system 212 with respect to suchdocuments or other content objects.

FIG. 3 is a block diagram illustrating an example embodiment of a casemanagement system. In some embodiments, the case management system ofFIG. 3 corresponds to case management system 206 of FIG. 2. In theexample shown, case management system 206 includes a networkcommunication interface 302, such as a wireless or other networkinterface card, to provide network connectivity, e.g., to network 204 ofFIG. 2. A case model development module 304 is accessible to developersvia network communication interface 302 and may be used to create and/ormodify case model definitions. In some embodiments, a visual or otheruser interface is provided, via network communication interface 302, toenable case models to be created and/or modified. For example, adeveloper may use a browser to access the developer user interface insome embodiments. Case model definitions are stored by case modeldevelopment module 304 by using a backend database (or other datastorage) interface 306 to store the case model(s) in case model store308.

Referring further to FIG. 3, the case management system 206 includes acase management module 310. In various embodiments, case managementmodule 310 includes functionality to enable users, e.g., users of clientsystems 202 of FIG. 2, to create and/or use case management instancesbased on case models stored in case model store 308. Case managementmodule 310, for example, may expose a web or other interface to remoteusers and may receive via said interface a request to create and/oraccess a case instance. Case management module 310 uses databaseinterface 306 to obtain an associated case model definition from casemodel store 308, to use the case model to instantiate case instances.Instance variables are stored by case management module 310 in caseinstance data store 312.

FIG. 4 is a diagram illustrating an example embodiment of a process andsystem to create and/or provide access to case management instances. Insome embodiments, the process of FIG. 4 may be implemented by a casemanagement system and/or a component thereof, such as case managementmodule 310 of FIG. 3. In the example shown, case management system 400receives a request 402 to create or access a case management instanceand invokes instantiation process 404. Instantiation process 404 uses acase model definition 406 associated with the request, e.g., a casemodel indicated explicitly and/or otherwise associated with datacomprising the request 402, and case management instance data 408associated with the case management instance, to instantiate and provideaccess to a case management instance 410.

In various embodiments, a case model definition such as model definition406 may include an XML file or other structured data, which the casemanagement system is configured to parse and use to construct caseinstances based on the case model. For example, the hierarchical datastructure may be defined, along with metadata and associated behaviorsfor each case node. A case management instance, such as case managementinstance 410, may include an in memory instance of a data structuredefined in case model definition 406, which is used to store instancevariables, such as instance data 408 in this example.

FIG. 5 is a flow chart illustrating an example embodiment of a processto receive and store a case model. In some embodiments, the process ofFIG. 5 is used to implement step 102 of FIG. 1 and is performed by acase management system, such as case management system 206 of FIG. 2,e.g., case model development module 304 of FIG. 3. In the example shown,an indication that a new case model is to be defined is received (502).A problem domain-specific developer interface to be used to define thecase model is provided (504). For example, in some embodiments adeveloper may indicate in a request to define a new case model, and/ormay be prompted to indicate, a “problem domain” with which the casemodel is associated, such as a loan application, an employmentapplication, a product development or other business project, ahealthcare or other patient, a claim for reimbursement or benefits, or amatter being handled by a professional or personal service provider,such as a lawsuit, home renovation project, etc. In various embodiments,the problem domain-specific developer interface provides access toproblem domain-specific elements to assist the developer in defining thecase model. For example, a loan application typically is initiated by aloan applicant submitting an application, and typically involvesgathering information to verify and evaluate the applicant's identity,financial assets, income, creditworthiness, etc. In some embodiments, atemplate may be provided to be used as a starting point. The developeruses visual or other tools to customize the template as desired todefine a case model.

Once the developer has completed and submitted the case modeldefinition, the case model definition is received, stored, and deployed(506). In some embodiments, a runtime representation of the definitionis processed, e.g., upon submission by the developer, to generate an XMLor other structured data file that embodies the case model as defined.Deployment in various embodiments includes making the case modeldefinition available to be used to instantiate case management instancesbased on the case model, e.g., individual loan application cases.

FIG. 6 is a flow chart illustrating an example embodiment of a processto receive and store a case model. In some embodiments, the process ofFIG. 6 is included in step 506 of FIG. 5. In the example shown, adefinition of a hierarchical/nested data model is received (602). Forexample, a user interface that enables a developer to drag and drop casenodes onto a canvass and to indicate hierarchical relationships betweencase nodes may be provided and used by the developer to define ahierarchical/nested data model. A definition of case roles is receivedand stored (604). For example, a “loan application” case model mayinclude user roles such as “loan initiator”, “underwriter”, “appraiser”,etc. For each case node in the hierarchical/nested data model, adefinition of metadata, behaviors, content (e.g., documents),states/phases (and transitions between states/phases), and/orpermissions (e.g., by case role) is received (606). For example, invarious embodiments, a developer interface may be provided to enable adeveloper to select a case node and be presented with an interface todefine a state machine for that case node.

FIG. 7 is a block diagram illustrating an example of a hierarchical datamodel in an embodiment of a case management system. In variousembodiments, a case model, such as one defined using the processes ofFIGS. 5 and 6, may include a hierarchical/nested container model, suchas the one shown in FIG. 7. In the example shown, hierarchical/nestedcontainer model 700 includes a root node 702 at a first (highest)hierarchical level. At a first hierarchical level below the root node,nodes 704 and 706 are included. Finally, in a lowest hierarchical level(in this example), node 704 has two “case leaf nodes” 708 and 710. Invarious embodiments, metadata, behaviors, permissions, etc. that havebeen defined for a case node extend (or in some embodiments may at theoption of the case model developer be extended) to child case nodes ofthe case node at which such metadata, behaviors, permissions, etc. havebeen defined.

FIG. 8 is a block diagram illustrating an example of a hierarchical datamodel in an embodiment of a case management system, such as casemanagement system 206 of FIG. 2. In particular, a hierarchical/nestedcontainer model for a home loan application is illustrated. In theexample shown, each instance of a “loan” case includes a root node 802and two first level sub-nodes 804 and 806, in this example one (804) forfinancial information of the applicant and associated processing, andanother (806) for information and processing associated with the home tobe purchased using the loan. The “applicant information” sub-node 804includes a first case leaf node 808 for Forms W-2 and a second case leafnode 810 for the applicant's tax returns. “Property” sub-node 806includes case leaf nodes 812, 814, and 816 for the title report,appraisal report, and home inspection report, respectively. In variousembodiments, the case model definition may include for each case node adefinition of metadata and/or behaviors for that case node. For caseleaf nodes, such as case leaf nodes 808, 810, 812, 814, and 816, thecase model definition may include information regarding documents orother content objects to be associated with such nodes, including insome embodiments an identification of a storage location in which suchdocuments are to be stored, e.g., in a content repository such asrepository 214 of FIG. 2 associated with a content management systemsuch as content management system 212 of FIG. 2.

FIG. 9 is a block diagram illustrating an example of a hierarchical datamodel and associated state machine in an embodiment of a case managementsystem. In various embodiments, the hierarchical data model andassociated state machine of FIG. 9 may be included in a case modeldefinition defined and/or deployed via a case management system such ascase management system 206 of FIGS. 2 and 3. In the example shown, astate machine 902 has been defined for and associated with case node 704of hierarchical/nested container model 700 of FIG. 7.

In various embodiments, for any case node within the hierarchical/nestedcontainer model, a state machine can be defined and the actions that canbe used to transition between different phases/states of the statemachine defined for that case node may be specified. These actions couldbe used during runtime to transition between states.

In the example shown in FIG. 9, a state machine 902 has been defined andassociated with a specific case node in the hierarchical model shown inFIG. 7, specifically node “F11” (704). In various embodiments, adocument or other content associated with node “F11”; traits, such asmetadata and/or associated behavior associated with node “F11”; etc. maybe transformed, reviewed, and/or otherwise involved with processing thatmay result, in a given case model instance, in transitions being madebetween states of the state machine 902 defined for case node “F11” inthis example.

In various embodiments, enabling a state machine to be defined andassociated with a case node comprising a hierarchal/nested containermodel provides a flexible, dynamic framework within which ad hoc actionsand/or information can be responded to, in a manner determineddynamically based on the circumstances of a given instance of a case,with the result that the actions and/or processing performed at a givencase node, and/or the consequences of such actions and/or processing,may be different for one instance of the case model than for anotherinstance of the case model.

In various embodiments, a state machine engine may be included in a casemanagement system, such as case management system 206 of FIG. 2, toenable a state machine defined for a case node, such as state machine902 of FIG. 9, to be implemented and associated functionality to beprovided. For example, in some embodiments, case management module 310of FIG. 3 may include a state machine engine. In some embodiments, thestate machine engine may receive and parse state machine definitionportions of a case model definition, and may use such portions to createand manage runtime data structures associated with the respectivedefined states (phases) of the state machine and transitions betweenthem. In some embodiments, state variables associated with a currentstate of a case node-specific state machine for a given instance of acase model may be stored persistently with other case managementinstance data, for example in a case instance data store such as datastore 312 of FIG. 3.

FIG. 10 is a block diagram illustrating an example of a state machinedefined for a case node in an embodiment of a case management system. Invarious embodiments, the state machine of FIG. 10 may be included in acase model definition defined and/or deployed via a case managementsystem such as case management system 206 of FIGS. 2 and 3. In theexample shown, state machine 1000 includes an “open” state 1002,associated for example with beginning processing of a received document,such as one created locally, uploaded, or otherwise provided by a user.In the example shown, a transition out of the “open” state 1002 mayoccur upon a “submit” option being selected, e.g., by a user, a businessprocess, an external service, etc. If the item was submitted with anindication that a “review” is required (e.g., a reviewer is named orotherwise indicated), the state machine transitions to a “pending” state1004, indicating the required review is pending. If no review isrequired, the state machine instead transitions directly to an“accepted” state 1006. If review was required and the reviewer “accepts”the item, a transition from “pending” state 1004 to “accepted” state1006 occurs. If instead the reviewer were to “reject” the item, in thisexample a transition from “pending” state 1004 to “rejected” state 1008would occur. From either “accepted” state 1006 or “rejected” state 1008,a “close” transition to a “closed” state 1010 could occur. Finally, inthis example, “reopen” transitions back to “open” state 1002 could occurfrom the “accepted” state 1006, “rejected” state 1008, and/or “closed”state 1010.

Note that for a given instance of a case model with which the statemachine 1000 of FIG. 10 is associated, the states through which thestate machine 1000 of FIG. 10 may transition for that instance may bedifferent than for one or more other instances. Also, for a giveninstance, depending on the state machine definition included in the casemodel definition, the user data associated with that instance atapplicable times, and potentially user actions and decisions made inresponse to case information, the state machine 1000 may be transitionedto/through a given state more than once (e.g., via the “reopen”transitions), potentially resulting in different outcomes of processingassociated with that state.

FIG. 11 is a flow chart illustrating an embodiment of a process todefine a state machine for a case node in an embodiment of a casemanagement system. In various embodiments, the process of FIG. 11 may beperformed by a case management system, such as case management system206 of FIGS. 2 and 3. For example, in some embodiments, a case modeldevelopment component such as case model development module 304 of FIG.3 may include a development tool and/or feature to enable a statemachine to be defined and associated with a case node, using the processof FIG. 11.

In the example shown in FIG. 11, an indication to define a state machinefor a case node is received (1102). For example, a developer using acase model definition tool, service, and/or interface may select a casenode and provide an input indicating that a state machine is desired tobe defined for and associated with the selected node. A developer userinterface to define a state machine for the case node is provided(1104). A definition of two or more states and transition(s) betweenthem is received (1106). A definition of permissions associated with therespective states, e.g., who may access content or metadata associatedwith the case node while the state machine is in that state, is received(1108). A definition of permissions associated with transitions betweenthe respective states, e.g., who may cause each transition to occur, isreceived (1110). In various embodiments, a state machine defined for acase node using the process of FIG. 11 may be included in the case modeldefinition as stored and deployed, e.g., in a corresponding portion ofan XML or other structured data file comprising the case modeldefinition.

A hierarchical permissions model for case models is disclosed. Invarious embodiments, the hierarchical permissions model is used atruntime, with respect to each case instance, to provide and controlaccess to the case instance, associated content, and associated actions.For a given case model, in various embodiments the case model definesauthorization permissions. For each of the case node in casehierarchical data model, in various embodiments permissions are modeledin such a way that a) which case role in b) which (state machine) phasehas c) what permissions are defined.

In various embodiments, with reference to defining permissions, a caserole may be a contained case role (defined at that case node) or a roledefined at a parent level. Likewise, a phase could be a phase defined atthat particular case node or a phase defined at a parent case node.

In some embodiments, permissions defining a) users from which case rolein b) which phase has c) what permissions with respect to metadata andcontent may be modeled.

In some embodiments, permissions are modeled defining a) users fromwhich case role in b) which phase can c) add or remove users from thatand other case roles.

In some embodiments, permissions are modeled defining a) users fromwhich case role can b) in what phase c) can transition a case node fromthat phase to possible target phase. As an example, users belonging to“checklist item reviewer” case role may in a case model be givenpermission to move a checklist item from “pending” to “accepted” or“rejected”. Similarly, users in a “checklist coordinator” case role maybe given permission to move a checklist item from an “accepted” or“closed” state to an “open” state.

FIG. 12 is a flow chart illustrating an embodiment of a process todefine hierarchical permissions model for case management. In someembodiments, the process of FIG. 12 may be implemented by a casemanagement system, such as case management system 206 of FIG. 2. In theexample shown, case role definitions for a case model are received(1202). In some embodiments, case role definitions may be received via acase model developer user interface. The case model developer defines ahierarchical data model for a case model. For each case node in the casemodel, the developer associates one or more case roles with the casenode (1204). For example, the developer may drag and drop a visualrepresentation of a case role onto a displayed representation of a casenode. At each case node, for each case role that has been associatedwith that case node, the permissions to be associated with that caserole at that case node are defined and (at runtime) set (1206). Forexample, in various embodiments, one or more of the followingpermissions may be set, with respect to metadata and/or contentassociated with a case node: create (C), read (R), update/modify (U),and delete (D).

In various embodiments, permissions set for a case role with respect toa case node may be defined dynamically, e.g., by reference to therespective phases/states of a state machine associated with the casenode. For example, a case role may have a first set of permissions at acase node when the case node's state machine is in a first phase/state,and a second (different) set of permissions at the case node when thecase node's state machine is in a second phase/state. In someembodiments, in each state one or more permissions associated withcausing transitions to be made to one or more other states may be setbased on case role. In some embodiments, permission may be set by caserole to indicate which case roles will be able to assign users to caseroles and/or to change such assignments.

FIG. 13 is a flow chart illustrating an example embodiment of a processto define hierarchical permissions conditioned on case node state. Insome embodiments, the process of FIG. 13 may be implemented by a casemanagement system, such as case management system 206 of FIG. 2. In theexample shown, definition of permissions by case node phase/state beginsat a first phase/state of a state machine associated with a case node(1302). Case role(s) is/are associated with the phase state (1304), andfor each case role associated with the case node phases/state,permissions are set for the case role with respect to the case node whenthe state machine of the case node is in that phase/state (1306).Processing continues with respect to the respective phases/states of thestate machine of the case node, until permissions have been defined foreach phase/state (1308, 1310).

In various embodiments, hierarchical and/or conditional (e.g., by casenode phase/state) permissions defined as described in connection withFIGS. 12 and 13 may be embodied in a case model definition. At runtime,when a case instance is instantiated based on the case model definition,data comprising the case model definition is parsed to determine andcreate runtime data structures reflecting the hierarchical data model ofthe case model, and with respect to each node permissions are set bycase role (and, as applicable, conditioned on case node phase/state).Permission-related services associated with a runtime environment inwhich the case instance is realized are used in some embodiments toenforce hierarchical and/or conditional (e.g., by phase/state)permissions as defined in the case model definition. For example, insome embodiments, the ability of a given user to access and/or performrequested operations with respect to metadata and/or content, toinitiate transitions between states, and/or to assign or modify theassignment of users to case roles with respect to the case instance isdetermined by the runtime environment based on which (if any) caserole(s) the user has been assigned with respect to the case instance,and the permission(s), if any, associated with such case role(s) withrespect to an applicable case node in a current phase/state of a statemachine associated with the case node.

FIG. 14 is a block diagram illustrating an example of a hierarchicaldata model and associated permission in an embodiment of a casemanagement system. In various embodiments, hierarchical permissions suchas those shown in FIG. 14 may be defined via a process such as the oneshown in FIG. 12. In the example shown, a hierarchical permission model1400 has been defined, corresponding to the hierarchical data model 700of FIG. 7. The hierarchical permission model 1400, includes in thisexample, for each case node of the hierarchical data model 700 of FIG. 7a corresponding hierarchical permission model node. For example, nodes1402, 1404, 1406, 1408, and 1410 of the permissions model 1400correspond to nodes 700, 704, 706, 708, and 710, respectively, of datamodel 700.

At each node of the hierarchical permission model 1400, one or more caseroles are identified as having permissions at the corresponding casenode, and for each the permissions to be provided are indicated. Forexample, at node 1402, a case role “R1” is listed as having read (R) andupdate (U) permissions with respect to root case node 702. In variousembodiments, the case role R1 would, by virtue of having read and updatepermissions set at the root case node 702, have at least the samepermissions at child case nodes of node 702, which in this example wouldinclude all nodes given that case node 702 is a root node. Asillustrated by node 1404 of the hierarchical permissions model 1400, thecase role R1 at some nodes may be given permissions beyond thoseassigned at the root node 1402. In this example, the case role R1 isassigned permissions to create, read, update, or delete content and/ormetadata at case node 704 corresponding to hierarchical permission modelnode 1404.

In addition, in the example shown in FIG. 14, additional case roles suchas R11 a, R11 b, R111, R112, and R12 are associated at permission modelnodes 1404, 1406, 1408, and 1410 with corresponding case nodes of datamodel 700, and at each permission model node, the respective permissionsset for each respective case role that has been associated areindicated.

In various embodiments, a case role may have permission(s) defined at aparent case node, and may have the same permission(s) with respect tochild case nodes of the parent node by virtue of the permission(s) setfor the case role at the parent node or, instead, permissions defined atthe parent node may be overridden with a different set of permissionsdefined at the child node(s) for the same case role. In someembodiments, a case role may be a “contained” case role, and may havepermission(s) only with respect to the case node at which it wasassigned the permission(s). For example, a set of permissions definedfor a case role at a specific case node may be “contained” in the sensethat the permissions defined at that node do not extend beyond thatnode, even if the case role exists and has a user assigned to it withrespect to other case nodes.

FIG. 15A is a block diagram illustrating an example of a hierarchicaldata model and associated permission model in an embodiment of a casemanagement system. In various embodiments, hierarchical permissions suchas those shown in FIG. 15A may be defined via a process such as the oneshown in FIG. 12. In the example shown, a case model 1500 includes ahierarchical data model comprising case nodes 1502, 1506, 1510, 1514,and 1518, and a corresponding hierarchical permissions model comprisingnodes 1504, 1508, 1512, 1516, and 1520. Each case node, in case model1500 in this example, has a corresponding set of case roles andassociated permissions. For example, case roles and permissions 1504 areassociated with root node 1502, and identify the case roles “LoanAdmin”, “Loan Underwriter”, and “Loan Applicant” as having therespective permissions indicated. In this example, permissions aredefined at each descendant/child case node of root node 1502 withreferences to these three case roles. At certain case nodes, one or moreof them have permissions beyond those indicated at the root node 1502.For example, permissions model node 1508 indicates that users having therole “Loan Admin” at root node Loan (1502) are granted rights to createand delete content (C, D) in addition to the read and update (R,U)permissions set at the root node 1502, 1504. Similar, users having therole “Loan Applicant” at root node Loan (1502) are granted in permissionmodel node 1512 permissions to create, read, update or delete metadataand/or content with respect to the financial documents listed at casenode 1510, for example to enable such users to upload copies of personalfinancial documents, replace outdated documents with more recent ones,etc.

In the example shown in FIG. 15A, the case role “Home Inspector” doesnot have any permission associated with root node 1502 or the sub-treebeginning at node 1506, but instead only has permissions with respect tothe sub-tree comprising case nodes 1514 and 1518. At “Home Details” casenode 1514, the “Home Inspector” case role is granted read permission(1516), and with respect to “Home Inspection Reports” case node 1518 the“Home Inspector” case role is granted permission to create, read,update, and delete (1520).

FIG. 15B is a block diagram illustrating an example of an instance of ahierarchical data model and associated permission model in an embodimentof a case management system. In various embodiments, hierarchicalpermissions such as those shown in FIG. 15B may be defined via a processsuch as the one shown in FIG. 12. In the example shown, a case instance1540 based on case model 1500 of FIG. 15A (in this example an instance“Loan 123” of the case type/model “Loan”) includes a plurality of casenodes 1542, 1546, 1550, 1554, and 1558 and for each a corresponding setof permissions 1544, 1548, 1552, 1556, and 1560, respectively, and asapplicable specific users associated with each case role. For example,case instance 1540 includes root node 1542 with associated permissions1544, identifying specific users who have been associated with the caseroles indicated for purposes of the case instance 1540. In the exampleshown, the users “Joe” and “Amy” have been associated with the “LoanApplicant” case role, and in various embodiments those users would beafforded with respect to case instance 1540 the privileges indicated incase model 1500 of FIG. 15A as being associated with that case role,e.g., permission to create, read, update, and delete metadata/contentcomprising and/or otherwise associated with case node 1550 (see 1510,1512 of FIG. 15A). Similarly, the user “Harry” is assigned the case role“Home Inspector” with respect to nodes 1554 and 1558 of case instance1540 (see case role/permission information at 1556, 1560), which wouldresult in the user “Harry” being afforded with respect to case instance1540 those permissions associated with the case role “Home Inspector” incase model 1500 of FIG. 15A (see 1514, 1516, 1518, and 1520 of FIG.15A).

While in the example shown in FIGS. 15A and 15B, each case role has astatically define set of permissions at each case node, in variousembodiments such permissions may be defined in the case model as beingconditioned on case node specific and/or other contextual data, such asa phase/state of a state machine associated with the case node. Inaddition, in various embodiments, permissions other than with respect tometadata and/or content may be defined, such as permissions regardingthe ability to add or modify case role assignments with respect to acase instance, and/or permissions to cause phase/state transitionswithin a state machine of a case node. For example, a case role may bedefined to have permission to update content and/or to make or changecase role assignments when a case node is in a first state, but not whenthe same case node is in a second state. Similarly, within a case nodeand a particular phase/state thereof, a case role may be defined ashaving a permission to cause a state transition to a next phase/state ofthe case node, but only if one or more conditions defined in the casemodel have been satisfied with respect to the case node, such as allrequired content has been uploaded, all required metadata has beenprovided, and/or an action required to be taken by another user has beencompleted.

FIG. 16 is a flow chart illustrating an embodiment of a process toassociate users with case roles. In various embodiments, a casemanagement system, such as case management system 206 of FIGS. 2 and 3,may implement the process of FIG. 16. In the example shown, anindication to associate a user with a case role with respect to a caseinstance is received (1602). For example, an administrative user mayassign a case management system user to a case role with respect to oneor more case instances, e.g., via an administrative user interface.Permissions associated with the case role, e.g., in a permissions modelcomprising a case model definition, are extended to the user withrespect to applicable case nodes of the case instance (1604).

FIG. 17 is a flow chart illustrating an embodiment of a process toprovide and control access based on a hierarchical permissions model. Insome embodiments, the process of FIG. 17 is used to implement step 1604of FIG. 16. In the example shown, when a user attempts to perform anaction with respect to a case instance (1702), e.g., create, read,update, or delete metadata and/or content, assign a user to a case role,cause a transition to a new phase/state with respect to a case node ofthe case instance, etc., it is determined which case role(s), if any,the requesting user has with respect to the case instance (1704). It isdetermined whether any case role to which the user has been assignedwith respect to the case instance has the permission required to performthe action with respect to the case instance (1706). If so (1708), therequested action is allowed to be performed by the user (1710). If not(1708), the requested operation is not allowed to be performed by theuser (1712).

For example, in the example shown in FIGS. 15A and 15B, the user “Harry”is assigned the role “Home Inspector”. As a result, a request by theuser “Harry” to update a home inspection report document and/or metadataassociated with the Home Inspection Reports node 1558 of case instance1540 of FIG. 15B would be allowed (see nodes 1156, 1158 and 1560 of FIG.15B, and corresponding nodes 1518 and 1520 of FIG. 15A), whereas arequest by the same user “Harry” to read financial metadata at case node1546 of case instance 1540 of FIG. 15B would not be allowed (see nodes1544, 1550, and 1552 of FIG. 15B, and corresponding nodes 1506 and 1508of FIG. 15A, indicating the “Home Inspector” case role has no permissionat the applicable case node).

Providing the ability to define a hierarchical and in some embodimentsconditional permission model for case management in various embodimentsenables a case model developer to define and control permissions withfine granularity and, if desired, to cause permissions to be determineddynamically, at runtime, based on conditions such as a currentphase/state of a state machine associated with a case node or othercontext data or conditions.

Although the foregoing embodiments have been described in some detailfor purposes of clarity of understanding, the technology is not limitedto the details provided. There are many alternative ways of implementingthe technology. The disclosed embodiments are illustrative and notrestrictive.

What is claimed is:
 1. A computer program product comprising anon-transitory computer readable medium embodying thereon computerexecutable code comprising instructions for: accessing a case modelcomprising a hierarchical data model and a hierarchical permissionsmodel, the hierarchical data model comprising a plurality of case nodesand the hierarchical permission model comprising a hierarchicalpermission model node corresponding to a corresponding case node fromthe plurality of case nodes, the hierarchical permission model nodespecifying a case role and a definition of permissions to be associatedwith the case role with respect to the corresponding case node; andenforcing permissions defined by the hierarchical permission model withrespect a case instance instantiated using the case model by allowing,or not allowing, a requested action to be performed, at run time, basedon the case role.
 2. The computer program product of claim 1, whereinenforcing the permissions defined by the hierarchical permission modelcomprises: based on the hierarchical permission model, associating thecase role with a first permission required to perform the requestedaction with respect to a first case node of the case instance; receivinga request to perform the requested action with respect to the first casenode of the case instance; determining that a requesting user associatedwith the request is assigned the case role with respect to the caseinstance; and allowing the requested action to be performed based atleast in part on the determination that the requesting user isassociated with the case role and the determination that the case roleis granted the first permission required to perform the requested actionwith respect to the first case node.
 3. The computer program product ofclaim 2, wherein the first case node is an instance of the correspondingcase node.
 4. The computer program product of claim 1, wherein enforcingthe permissions defined by the hierarchical permission model comprises:based on the hierarchical permission model, associating the case rolewith a first permission required to perform the requested action withrespect to a first case node of the case instance, wherein the firstcase node is an instance of the corresponding case node; receiving arequest to perform the requested action with respect to a second casenode of the case instance, wherein the second case node is descendant ofthe first case node; determining that a requesting user associated withthe request is assigned the case role with respect to the case instance;and allowing the requested action to be performed based at least in parton the determination that the requesting user is associated with thecase role and the determination that the case role is granted the firstpermission required to perform the requested action with respect to thefirst case node.
 5. The computer program product of claim 1, whereinenforcing the permissions defined in the hierarchical permission modelwith respect to the case instance comprises blocking a request toperform the requested action with respect to a first case node of afirst case instance based at least in part on a determination that arequesting user with which the request is associated is not assigned anycase role to which a permission required to perform the requested actionis granted with respect to the first case node of the first caseinstance.
 6. The computer program product of claim 1, further comprisinginstructions for: instantiating the case instance using the case model,wherein the case instance comprises an instance of the hierarchical datamodel; and based on the hierarchical permissions model, setting a firstpermission for the case role with respect to a first case node of thecase instance, wherein the first case node is an instance of thecorresponding case node.
 7. The computer program product of claim 6,further comprising instructions for: based on a determination that thecase instance includes a second case node that is a descendent of thefirst case node, extending the case role the first permission withrespect to the second case node.
 8. The computer program product ofclaim 6, wherein: the case model associates a state machine with thecorresponding case node, the state machine comprising a plurality ofcase node states; the definition of permissions to be associated withthe case role with respect to the corresponding case node associates thecase role with the first permission for a first state of the statemachine and associates the case role with a second permission for asecond state of the state machine; and setting the first permission forthe case role with respect to the first case node of the case instancecomprises dynamically setting the first permission for the case rolewith respect to the first case node based on a current state of thestate machine with respect to the first case node.
 9. The computerprogram product of claim 1, wherein the definition of permissions to beassociated with the case role with respect to the corresponding casenode defines a first permission as being conditioned on case nodespecific data.
 10. The computer program product of claim 1, wherein thedefinition of permissions to be associated with the case role withrespect to the corresponding case node defines a first permission asbeing conditioned on contextual data.
 11. A case management methodcomprising accessing, by a processor, a case model comprising ahierarchical data model and a hierarchical permissions model, thehierarchical data model comprising a plurality of case nodes and thehierarchical permission model comprising a hierarchical permission modelnode corresponding to a corresponding case node from the plurality ofcase nodes, the hierarchical permission model node specifying a caserole and a definition of permissions to be associated with the case rolewith respect to the corresponding case node; and enforcing, by theprocessor, permissions defined by the hierarchical permission model withrespect a case instance instantiated using the case model by allowing,or not allowing, a requested action to be performed, at run time, basedon the case role.
 12. The method of claim 11, wherein enforcing thepermissions defined by the hierarchical permission model comprises:based on the hierarchical permission model, associating the case rolewith a first permission required to perform the requested action withrespect to a first case node of the case instance; receiving a requestto perform the requested action with respect to the first case node ofthe case instance; determining that a requesting user associated withthe request is assigned the case role with respect to the case instance;and allowing the requested action to be performed based at least in parton the determination that the requesting user is associated with thecase role and the determination that the case role is granted the firstpermission required to perform the requested action with respect to thefirst case node.
 13. The method of claim 12, wherein the first case nodeis an instance of the corresponding case node.
 14. The method of claim11, wherein enforcing the permissions defined by the hierarchicalpermission model comprises: based on the hierarchical permission model,associating the case role with a first permission required to performthe requested action with respect to a first case node of the caseinstance, wherein the first case node is an instance of thecorresponding case node; receiving a request to perform the requestedaction with respect to a second case node of the case instance, whereinthe second case node is descendant of the first case node; determiningthat a requesting user associated with the request is assigned the caserole with respect to the case instance; and allowing the requestedaction to be performed based at least in part on the determination thatthe requesting user is associated with the case role and thedetermination that the case role is granted the first permissionrequired to perform the requested action with respect to the first casenode.
 15. The method of claim 11, wherein enforcing the permissionsdefined in the hierarchical permission model with respect to the caseinstance comprises blocking a request to perform the requested actionwith respect to a first case node of a first case instance based atleast in part on a determination that a requesting user with which therequest is associated is not assigned any case role to which apermission required to perform the requested action is granted withrespect to the first case node of the first case instance.
 16. Themethod of claim 11, further comprising the processor performing:instantiating the case instance using the case model, wherein the caseinstance comprises an instance of the hierarchical data model; and basedon the hierarchical permissions model, setting a first permission forthe case role with respect to a first case node of the case instance,wherein the first case node is an instance of the corresponding casenode.
 17. The method of claim 16, further comprising the processorperforming: based on a determination that the case instance includes asecond case node that is a descendent of the first case node, extendingthe case role the first permission with respect to the second case node.18. The method of claim 16, wherein: the case model associates a statemachine with the corresponding case node, the state machine comprising aplurality of case node states; the definition of permissions to beassociated with the case role with respect to the corresponding casenode associates the case role with the first permission for a firststate of the state machine and associates the case role with a secondpermission for a second state of the state machine; and setting thefirst permission for the case role with respect to the first case nodeof the case instance comprises dynamically setting the first permissionfor the case role with respect to the first case node based on a currentstate of the state machine with respect to the first case node.
 19. Themethod of claim 11, wherein the definition of permissions to beassociated with the case role with respect to the corresponding casenode defines a first permission as being conditioned on case nodespecific data.
 20. The method of claim 11, wherein the definition ofpermissions to be associated with the case role with respect to thecorresponding case node defines a first permission as being conditionedon contextual data.